/* 
 * EmailVO.java
 * Copyright (c) Faculdade Anhanguera de Anápolis.
 * Tecnologia em Análise e Desenvolvimento de Sistemas.
 * Projeto Multidisciplinar de Autoaprendizagem.
 *
 * Este software é confidencial e propriedade da Faculdade Anhanguera de Anápolis.
 * Não é permitida sua distribuição ou divulgação do seu conteúdo sem expressa autorização da Faculdade Anhanguera de Anápolis.
 * Este arquivo contém informações proprietárias.
 */
package br.com.pma.chamatec.vo;

import java.io.Serializable;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 * Classe de representação do dados de envio de email.
 *
 * @author Ludemeula Fernandes de Sá
 */
public class EmailVO implements Serializable {
	private static final long serialVersionUID = 6177066271712893099L;

	private String servidorEmail;
	private String portaEmail;
	private String usuarioEmail;
	private String senhaUsuarioEmail;
	private String enderecoFrom;
	private String subtitulo;
	private String corpoEmail;
	private String contentType;
	private List<String> enderecosTo;
	private List<String> enderecosCC;
	private boolean usaSSL;
	private boolean usaTLS;
	private int tentativas;
	private String mensagemErro;
	private boolean solicitaConfirmacao;
	private boolean aceitaCertificadoInvalido;

	/**
	 * Contrutor da classe.
	 */
	public EmailVO() {
		this.enderecosTo = new LinkedList<String>();
		this.enderecosCC = new LinkedList<String>();
	}

	/**
	 * Remove um email.
	 * 
	 * @param email
	 * @return
	 */
	public boolean removerEmail(String email) {
		return enderecosTo.remove(email);
	}

	/**
	 * Adiciona um email.
	 * 
	 * @param email
	 */
	public void adicionarEmail(String email) {
		enderecosTo.add(email);
	}

	/**
	 * Remove um destinatário de cópia oculta.
	 * 
	 * @param email
	 * @return
	 */
	public boolean removerCC(String email) {
		return enderecosCC.remove(email);
	}

	/**
	 * Adiciona um destinatário de cópia oculta.
	 * 
	 * @param email
	 */
	public void adicionarCC(String email) {
		enderecosCC.add(email);
	}

	/**
	 * Adiciona endereços de email.
	 * 
	 * @param emails
	 */
	public void adicionarEmails(String[] emails) {
		for (int i = 0; i < emails.length; i++)
			enderecosTo.add(emails[i]);
	}

	/**
	 * Verifica se existe email pendente para ser enviado.
	 * 
	 * @return
	 */
	public boolean possuiEmailPendente() {
		return enderecosTo.size() > 0;
	}

	/**
	 * Transforma a lista de endereços de email em um array.
	 * 
	 * @return
	 */
	public String[] getEnderecosToArray() {
		String[] e = new String[enderecosTo.size()];
		Iterator<String> itEnderecosTo = enderecosTo.iterator();
		int cont = 0;

		while (itEnderecosTo.hasNext())
			e[cont++] = (String) itEnderecosTo.next();

		return e;
	}

	/**
	 * Transforma a lista de destinatários de cópia oculta em um array.
	 * 
	 * @return
	 */
	public String[] getccsToArray() {
		String[] e = new String[enderecosCC.size()];
		Iterator<String> itEnderecosTo = enderecosCC.iterator();
		int cont = 0;

		while (itEnderecosTo.hasNext())
			e[cont++] = (String) itEnderecosTo.next();

		return e;
	}

	/**
	 * @return the servidorEmail
	 */
	public String getServidorEmail() {
		return servidorEmail;
	}

	/**
	 * @param servidorEmail the servidorEmail to set
	 */
	public void setServidorEmail(String servidorEmail) {
		this.servidorEmail = servidorEmail;
	}

	/**
	 * @return the portaEmail
	 */
	public String getPortaEmail() {
		return portaEmail;
	}

	/**
	 * @param portaEmail the portaEmail to set
	 */
	public void setPortaEmail(String portaEmail) {
		this.portaEmail = portaEmail;
	}

	/**
	 * @return the usuarioEmail
	 */
	public String getUsuarioEmail() {
		return usuarioEmail;
	}

	/**
	 * @param usuarioEmail the usuarioEmail to set
	 */
	public void setUsuarioEmail(String usuarioEmail) {
		this.usuarioEmail = usuarioEmail;
	}

	/**
	 * @return the senhaUsuarioEmail
	 */
	public String getSenhaUsuarioEmail() {
		return senhaUsuarioEmail;
	}

	/**
	 * @param senhaUsuarioEmail the senhaUsuarioEmail to set
	 */
	public void setSenhaUsuarioEmail(String senhaUsuarioEmail) {
		this.senhaUsuarioEmail = senhaUsuarioEmail;
	}

	/**
	 * @return the enderecoFrom
	 */
	public String getEnderecoFrom() {
		return enderecoFrom;
	}

	/**
	 * @param enderecoFrom the enderecoFrom to set
	 */
	public void setEnderecoFrom(String enderecoFrom) {
		this.enderecoFrom = enderecoFrom;
	}

	/**
	 * @return the subtitulo
	 */
	public String getSubtitulo() {
		return subtitulo;
	}

	/**
	 * @param subtitulo the subtitulo to set
	 */
	public void setSubtitulo(String subtitulo) {
		this.subtitulo = subtitulo;
	}

	/**
	 * @return the corpoEmail
	 */
	public String getCorpoEmail() {
		return corpoEmail;
	}

	/**
	 * @param corpoEmail the corpoEmail to set
	 */
	public void setCorpoEmail(String corpoEmail) {
		this.corpoEmail = corpoEmail;
	}

	/**
	 * @return the contentType
	 */
	public String getContentType() {
		return contentType;
	}

	/**
	 * @param contentType the contentType to set
	 */
	public void setContentType(String contentType) {
		this.contentType = contentType;
	}

	/**
	 * @return the enderecosTo
	 */
	public List<String> getEnderecosTo() {
		return enderecosTo;
	}

	/**
	 * @param enderecosTo the enderecosTo to set
	 */
	public void setEnderecosTo(List<String> enderecosTo) {
		this.enderecosTo = enderecosTo;
	}

	/**
	 * @return the enderecosCC
	 */
	public List<String> getEnderecosCC() {
		return enderecosCC;
	}

	/**
	 * @param enderecosCC the enderecosCC to set
	 */
	public void setEnderecosCC(List<String> enderecosCC) {
		this.enderecosCC = enderecosCC;
	}

	/**
	 * @return the usaSSL
	 */
	public boolean isUsaSSL() {
		return usaSSL;
	}

	/**
	 * @param usaSSL the usaSSL to set
	 */
	public void setUsaSSL(boolean usaSSL) {
		this.usaSSL = usaSSL;
	}

	/**
	 * @return the usaTLS
	 */
	public boolean isUsaTLS() {
		return usaTLS;
	}

	/**
	 * @param usaTLS the usaTLS to set
	 */
	public void setUsaTLS(boolean usaTLS) {
		this.usaTLS = usaTLS;
	}

	/**
	 * @return the tentativas
	 */
	public int getTentativas() {
		return tentativas;
	}

	/**
	 * @param tentativas the tentativas to set
	 */
	public void setTentativas(int tentativas) {
		this.tentativas = tentativas;
	}

	/**
	 * @return the mensagemErro
	 */
	public String getMensagemErro() {
		return mensagemErro;
	}

	/**
	 * @param mensagemErro the mensagemErro to set
	 */
	public void setMensagemErro(String mensagemErro) {
		this.mensagemErro = mensagemErro;
	}

	/**
	 * @return the solicitaConfirmacao
	 */
	public boolean isSolicitaConfirmacao() {
		return solicitaConfirmacao;
	}

	/**
	 * @param solicitaConfirmacao the solicitaConfirmacao to set
	 */
	public void setSolicitaConfirmacao(boolean solicitaConfirmacao) {
		this.solicitaConfirmacao = solicitaConfirmacao;
	}

	/**
	 * @return the aceitaCertificadoInvalido
	 */
	public boolean isAceitaCertificadoInvalido() {
		return aceitaCertificadoInvalido;
	}

	/**
	 * @param aceitaCertificadoInvalido the aceitaCertificadoInvalido to set
	 */
	public void setAceitaCertificadoInvalido(boolean aceitaCertificadoInvalido) {
		this.aceitaCertificadoInvalido = aceitaCertificadoInvalido;
	}
}